#pragma once
// 用于管理lua和C++交互的类
#include <string>
#include <functional>
#include <unordered_map>
#include <lua5.4/lua.hpp>

// 一些函数指针定义
typedef int (*luaCallback) (lua_State*);// 定义C暴露给lua的函数指针类型

class LuaManager
{
public:
    LuaManager(/* args */);
    ~LuaManager();
    bool Initialize();
    bool Register2Lua(std::string name, luaCallback callback);
    void DoLuaFunc(const char* name, const char* data, size_t size);
    void PutNewExposeFunc(std::string name, luaCallback callback);

private:
    lua_State* m_lua;// 保存lua状态机
    std::unordered_map<std::string, luaCallback> m_funcMap;// 保存所有需要注册的函数
};
